home *** CD-ROM | disk | FTP | other *** search
- #ifndef __SETTYPESDIALOG__
- #define __SETTYPESDIALOG__
-
- #ifndef __WINDOWHANDLER__
- #include "WindowHandler.h"
- #endif
-
- class TAEvent;
- class TFutureShockDialogHandler;
-
- void OpenFutureShockDialog();
- TFutureShockDialogHandler* GetFutureShockControl();
- Boolean ShouldResetTimer();
- Boolean ShouldForceError();
-
- enum
- {
- kStateNeverDrawn,
- kStateShowTimeRemaining,
- kStateEventDone,
- kStateInLimbo
- };
-
- struct __clientEventInfo
- {
- long fReturnID;
- OSErr fReturnResult;
- };
-
- typedef struct __clientEventInfo ClientEventInfo;
-
- struct __serverEventInfo
- {
- long fReturnID;
- OSErr fReturnResult;
- long fResetFrequency;
- long fPreviousNextReset;
- unsigned long fNextTimerReset;
- long fTotalEventProcessingTime;
- long fProcessingTimeRemaining;
- };
-
- typedef struct __serverEventInfo ServerEventInfo;
-
- struct __paneSlotState
- {
- long fLastState;
- long fLastReturnID;
- long fLastReturnResult;
- };
-
- typedef struct __paneSlotState PaneSlotState;
-
-
- //
- // Data structure size constants and indicese
- //
- const long kClientEventStackSize = 20;
- const long kServerEventStackSize = 20;
- const long kMaxPaneSlots = 20;
-
- class TPaneStateArray
- {
- public:
- TPaneStateArray();
- Boolean SetLastState(short whichSlot, long returnID, long returnResult, long newState, Rect& reportRect);
-
- private:
- PaneSlotState fStateRecord[kMaxPaneSlots];
- };
-
-
-
- //
- // Pixel sizes for elements in the dialog
- //
- const long kHeaderSpace = 4;
- const long kClientReportHeight = 40;
- const long kClientReportLeft = 10;
- const long kClientReportBarTop = 22;
-
- const long kServerReportHeight = 40;
- const long kServerReportLeft = 10;
- const long kServerReportBarTop = 22;
-
- const long kProgressWidth = 160;
- const long kProgressHeight = 10;
-
- //
- // Item numbers for various elements in the dialog
- //
- enum
- {
- kSendButton = 1,
- kResetPeriodiclyRadio,
- kAllowTimeoutRadio,
- kForceErrorRadio,
- kServerPane,
- kClientPane,
- kDottedLine = 9,
- kFirstRadio = kResetPeriodiclyRadio,
- kLastRadio = kForceErrorRadio
- };
-
- class TFutureShockDialogHandler : public TModelessDialogHandler
- {
- public:
- TFutureShockDialogHandler() :
- fResetTimerPeriodicly(true),
- fForceEventToFail(false),
- fNumberRegisteredClientEvents(0),
- fNumberRegisteredServerEvents(0),
- fLastRedrawTick(0) {}
-
- void IFutureShockDialogHandler(DialogPtr dialog);
-
- virtual void Idle(EventRecord* event);
- virtual void SetupMenus();
- virtual Boolean ProcessMenuSelection(short commandID);
- virtual void DialogManagerEvent(EventRecord* event, short itemHit);
- virtual void CloseWindowByUser();
-
- void DrawClientServerPanes(short item, Boolean isUpdate);
- void DrawServerPane(Rect& paneLocation, Boolean isUpdate);
- void DrawClientPane(Rect& paneLocation, Boolean isUpdate);
-
- void DrawProgressBar(short x, short y, long totalValue, long remainingValue);
- void DrawResetTimer(Rect& timerLocation, long totalValue, long remainingValue, Boolean eraseIt);
-
- long FindClientEventIndex(long eventReturnID);
- void RegisterClientEvent(TAEvent& ae);
- void ClientEventComplete(TAEvent& ae, OSErr eventResult);
-
- long FindServerEventIndex(long eventReturnID);
- void RegisterServerEvent(TAEvent& ae, long resetFrequency, long totalEventProcessingTime);
- void UpdateServerEventInfo(TAEvent& ae, unsigned long nextTimerReset, unsigned long processingTimeRemaining);
- void ServerEventComplete(TAEvent& ae, OSErr eventResult);
-
- long SendTestMessage();
-
- Boolean ResetTimerPeriodicly() { return fResetTimerPeriodicly; }
- Boolean ShouldForceError() { return fForceEventToFail; }
-
- private:
- Boolean fResetTimerPeriodicly;
- Boolean fForceEventToFail;
- long fLastRedrawTick;
- long fNumberRegisteredClientEvents;
- long fNumberRegisteredServerEvents;
-
- ClientEventInfo fClientEventInfo[kClientEventStackSize];
- ServerEventInfo fServerEventInfo[kClientEventStackSize];
-
- TPaneStateArray fClientPaneState;
- TPaneStateArray fServerPaneState;
- };
-
-
- #endif
-
-